package com.naizhuai.util;

import android.annotation.SuppressLint;

import org.ocpsoft.prettytime.PrettyTime;

import java.security.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;

/**
 * @author：lichenxi
 * @date 2018/2/27 00
 * email：525603977@qq.com
 * Fighting
 */
public final class TimeUtils {
    @SuppressLint("SimpleDateFormat")
    private static final DateFormat DEFAULT_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 将时间戳转为时间字符串
     * <p>格式为 yyyy-MM-dd HH:mm:ss</p>
     *
     * @param millis 毫秒时间戳
     * @return 时间字符串
     */
    public static String millis2String(final long millis) {
        return millis2String(millis, DEFAULT_FORMAT);
    }

    /**
     * 将时间戳转为时间字符串
     * <p>格式为 format</p>
     *
     * @param millis 毫秒时间戳
     * @param format 时间格式
     * @return 时间字符串
     */
    public static String millis2String(final long millis, final DateFormat format) {
        String res = format.format(new Date(millis));
        return res;
    }

    /**
     * 将时间戳转为时间字符串
     *
     * @return 时间字符串
     */
    public static String date2String(final Date date) {
        PrettyTime t = new PrettyTime(new Date());
        return t.format(date);
    }

    public static String dateString(String timeStr) {
        long sss = Long.parseLong(timeStr);
        Date date = new Date(sss * 1000);
        PrettyTime t = new PrettyTime(new Date());
        return t.format(date);
    }

    /**
     * 取得当前时间戳（精确到秒）
     *
     * @return
     */
    public static Long timeStamp() {
        long time = System.currentTimeMillis();
        String t = String.valueOf(time / 1000);
        return System.currentTimeMillis();
    }

    /**
     * 取得当前时间戳（精确到秒）
     *
     * @return
     */
    public static String timeStampStr() {
        long time = System.currentTimeMillis();
        return String.valueOf(time / 1000);
    }

    /**
     * 获取当前时间在本季度所占的时间进度的百分比
     *
     * @return
     */
    public static double getTargetTimeProcess() {
        Date startDate = TimeChangeUtils.getCurrentQuarterStartTime();
        Date endDate = TimeChangeUtils.getCurrentQuarterEndTime();
        long timeTemp = System.currentTimeMillis();
        double timeLength = endDate.getTime() - startDate.getTime();
        return (timeTemp - startDate.getTime()) / timeLength;
    }

    /**
     * 判断当前时间是否超过某个timetemp
     *
     * @return
     */
    public static boolean isOverDeaLine(String timeTemp) {
        return System.currentTimeMillis()/1000>=Long.valueOf(timeTemp);
    }
}
